###############################################################################
# Appendix Figure 12 1a
###############################################################################
# 
###############################################################################
# Content
###############################################################################
# 1) Dependencies
# 2) Load Data
# 3) Aggregation for Figure
# 4) Figure
###############################################################################
# 1) Dependencies
###############################################################################
library(readr)
library(dplyr)
library(plyr)
library(ggplot2)
library(gganimate)
library(ggeffects)
library(ggExtra)
library(ggridges)
library(ggrepel)
library(grid)
library(scales)
library(lubridate)
library(extrafont)
library(reshape2)
library(here)
library(ggforce)
library(png)
library(readxl)
library(grid)
library(gridExtra)
library(ggpubr)
library(ggalt)
library(stringr)
###############################################################################
# 2) Load Data
###############################################################################
# Set Path
setwd(dirname(rstudioapi::getActiveDocumentContext()$path))
rm(list=ls())

# Custom functions
# ggplot rescale x axis....
scale_x_reordered <- function(..., sep = "___") {
  reg <- paste0(sep, ".+$")
  ggplot2::scale_x_discrete(labels = function(x) gsub(reg, "", x), ...)
}
# ggplot order over facets...
reorder_within <- function(x, by, within, fun = mean, sep = "___", ...) {
  new_x <- paste(x, within, sep = sep)
  stats::reorder(new_x, by, FUN = fun)
}

suppressWarnings(source('ggplot_theme_ddl.R', encoding = "UTF-8"))

# Load Candidates Lists (full lists not just the one we found in the newsarticles)
bfs_list_2019 <- read_delim("../support/parliament/frauenanteil_nr_zeitreihe_2.csv", delim = ";")
###############################################################################
# 3) Aggregations for Figure
###############################################################################
agg <- bfs_list_2019 %>% filter(kanton_bezeichnung != "CH") %>% 
  filter(partei_bezeichnung_de %in% c("SVP", "GPS", "FDP", "CVP", "GLP", "BDP", "SP")) %>%
  filter(wahl_jahr %in% c("2015","2019")) %>%
  group_by(wahl_jahr)


agg <- agg %>% ungroup %>% tidyr::complete(wahl_jahr,kanton_bezeichnung, partei_bezeichnung_de, fill = list(partei_staerke = 0))

.fill2 <- unlist(colourList[['colour']][['parties']])
names(.fill2) <- toupper(names(.fill2))

.fill2 <- .fill2[unique(agg$partei_bezeichnung_de)]

agg <- agg %>%
  arrange(wahl_jahr,kanton_bezeichnung, -partei_staerke) %>%
  mutate(partei_bezeichnung_de = factor(partei_bezeichnung_de, levels = unique(partei_bezeichnung_de)))


###############################################################################
# 4) Figure
###############################################################################
# party orders, colors
fig_A <- ggplot(data = agg, aes(x=wahl_jahr, y=partei_staerke, color = partei_bezeichnung_de, fill = partei_bezeichnung_de)) +
  geom_bar(stat = "identity", position = position_dodge(width = 1.9), width = 1.5) +
  labs(x = "", y = "Party Strength [%]", title = "Party strength in Switzerland over time in the Cantons",
       fill = "Party:", color = "Party:") +
  scale_y_continuous(labels = percent_format(scale = 1), breaks = seq(0,85,by= 10)) +
  scale_x_continuous(breaks = c(2015,2019)) +
  scale_color_manual(values=.fill2) +
  scale_fill_manual(values=.fill2) +
  facet_wrap(~kanton_bezeichnung, ncol = 5, scales = "free_x") +
  ddl_theme(type = 'default',
            panel.grid.major=element_blank(),
            legend.position='none',
            axis.line.y.left = element_line(colour="black"),
            axis.line.x.bottom = element_line(colour="black")) +
  theme(legend.position = "bottom", legend.direction = "horizontal",
        strip.background = element_blank(), strip.text = element_text(color = "black"),
        axis.text.x = element_text(angle = 0, hjust = .5, vjust = 1, size = 16),
        axis.text.y = element_text(hjust=.5, size = 16),
        strip.text.x = element_text(size = 16),
        axis.title = element_text(size = 16),
        plot.title = element_text(size = 20),
        legend.text = element_text(size = 16),
        plot.margin = unit(c(.5,1.3,.5,.5), "cm"),
        legend.key.size = unit(1.5,"line"),
        axis.line.x = element_line(color="black", size = .5),
        axis.line.y = element_line(color="black", size = .5),
        panel.spacing.x=unit(2.5, "lines"))

fig_A

ggsave(plot = fig_A, filename ='../img_appendix/afigure_12_1a.png',width=12, height=18, dpi = 300, bg = "white")

